C++ 如何将char[]转换为string ???在线等 !!急!!急!!急!!

来源:百度知道 编辑:UC知道 时间:2024/05/31 14:59:03
我在Microsoft Visual C++ 6.0 中写了这么一段代码,想要实现从char[]到string 的转换。但是出现了错误。这是为什么??

void charctostr(char *c1,string s)
{
int i=0;
for(;c1[i]!='\0';i++)
{
s[i]=c1[i];
}
s[i+1]='\0';
}

首先c1[i]!='\0'有问题,数组不一定有\0做结尾
其次string s也有问题,这是值传递,非地址传递,无法改变调用函数里的s

#include<iostream>
#include<string>
using namespace std;

#define SIZE 6

void charctostr(char *c1, string *s);

int main()
{
char c[6]={'1', '2', '3', '4', '5', '6'};
string s="123456789";
charctostr(c, &s);
cout<<s;
}

void charctostr(char c1[], string *s)
{
int i=0;
for(;i<SIZE;i++)
{
(*s)[i]=c1[i];
}
while((*s)[i]!='\0')
{
(*s)[i]='\0';
}

}

在循环的最后一次执行后,i又被加了一次1,所以循环结束后,不是s[i+1]='\0'而应该是s[i]='\0'

最后一句话有问题把s[i+1]='\0';改为s[i]='\0';即可满足要求。